For live video streaming in a client-server approach, the video stream is downloaded from the streaming server (i.e. source) to the client. A video stream consists of a set of consecutive data pieces that the client periodically requests in order to play the video. A scalable live streaming service requires high streaming server bandwidth to satisfy an increasing number of clients over the internet. In order to reduce the cost of the streaming server, Peer-to-peer (P2P) live streaming has been developed. The basic concept of P2P live streaming is to make the clients, referred to as peers in this context, share the load with the streaming server.
P2P live streaming systems have gained a lot of interest in the recent years as it has the advantage of allowing a streaming source to broadcast e.g. a live video event to a large number of peers, without having to provide all the required bandwidth. This is done by making use of the peers' upload capacity to assist the streaming source in broadcasting the content to the peers.
P2P networks comprise any networks composed of entities that each provides access to a portion of their resources (e.g., processing capacity, disk storage, and/or bandwidth) to other entities. The P2P concept differs from traditional client/server architecture based networks where one or more entities (e.g., computers) are dedicated to serving the others in the network. Typically, entities in a P2P network run similar networking protocols and software. Applications for P2P networks are numerous and may for example comprise transporting and/or storing data on the Internet, such as video distribution for content owners.
Many approaches have been developed to efficiently make use of the upload capacity of the peers. These approaches can be divided into two main categories.
Tree-based systems are based on constructing one or more structured trees in an overlay network where peers at the top of each tree feed the peers below them. This approach works well when the peers do not join or leave the system at high frequency as data flow is achieved without any further messages between the peers. However, in a high churn environment, tree maintenance can be very costly and destruction and reconstruction of the tree(s) are sometimes necessary.
Mesh-based systems do not enforce a tree construction, or in other words; peer connectivity does not form a specified overlay, but the peers are connected to each other in an unstructured manner. They exchange data through so called gossip communication or by sending data request messages to each other. A disadvantage with mesh-based systems is that they can have a long setup time, as nodes need to negotiate with each other to find peers. However, many systems use the mesh-based approach as it is very robust to high churn. In such systems each peer has a number of neighbours that it potentially downloads from and failure of any neighbour is thus not as critical as in tree-based approaches.
Although individual peers take decisions locally without a global view in the mesh-based approaches, they can still reach comparable savings to tree based approaches when peer churn is considered, mainly since they do not have to carry the heavy overhead of maintaining a view of the global connectivity structure.
In a tree-based system, a video stream may be divided into a number of sub-streams or stripes. For instance, instead of having a peer download a given data content from a neighbouring peer, it can download half the content as one sub-stream from a first neighbouring peer and the other half of the content as one sub-stream from a second neighbouring peer. Such a division of data content into sub-streams has the advantage that the system can become more resilient to failures if the topology is carefully constructed. One of the known P2P systems using stripes for data content streaming is SplitStream, where topology is designed such that a single peer failure only results in the loss of a single stripe amongst its downloading peers. If sub-streams are constructed using schemes that allow for redundancy such as Multiple Descriptor Coded (MDC) and Forward Error Correction (FEC), the loss of a single stripe will not cause a major disruption in the viewing experience of an end user. A problem associated with the SplitStream approach is its relative inflexibility in connecting peers in the P2P system.